package com.starry.security.entity;

import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import lombok.Data;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

@Data
public class SecurityUser implements UserDetails {

	//当前登录用户
	private transient User currentUserInfo;

	//当前权限
	private List<String> permissionValueList;

	public SecurityUser() {
	}

	public SecurityUser(User user) {
		if (user != null) {
			this.currentUserInfo = user;
		}
	}

	@Override
	public Collection<? extends GrantedAuthority> getAuthorities() {
		Collection<GrantedAuthority> authorities = new ArrayList<>();
		for(String permissionValue : permissionValueList) {
			if(StringUtils.isEmpty(permissionValue)) continue;
			SimpleGrantedAuthority authority = new SimpleGrantedAuthority(permissionValue);
			authorities.add(authority);
		}

		return authorities;
	}

	@Override
	public String getPassword() {
		return currentUserInfo.getPassword();
	}

	@Override
	public String getUsername() {
		return currentUserInfo.getUsername();
	}

	@Override
	public boolean isAccountNonExpired() {
		return true;
	}

	@Override
	public boolean isAccountNonLocked() {
		return true;
	}

	@Override
	public boolean isCredentialsNonExpired() {
		return true;
	}

	@Override
	public boolean isEnabled() {
		return true;
	}
}